/*
 * IFacadeSistema
 * 
 * The IFacadeSistema interface provides methods to create, modify and delete an account,
 * a department, a scientific area and an event.
 * It also provides methods to get the list of departments, scientific area and events.
 * 
 * Author: Carmine Colicino, Luigi Di Martino
 * Version: 1.0
 * 
 * 2014 - Copyright by Team 6 - University of Salerno
*/
package it.unisa.udocs.facade;

import java.util.ArrayList;

import it.unisa.udocs.data.*;

public interface IFacadeSistema  extends IFacade{

	int creaAccount(Account account);
	
	void creaRicercatore(Account account);
	
	void creaResponsabileAteneo(Account account);
	
	ArrayList<Account> cercaAccount(ArrayList<String> campiCompilati);
	
	ArrayList<Account> getAccountById(int id);
	
	void  modificaAccount(Account newAccount);
	
	void eliminaAccount(Account account);
	
	void creaDipartimento(Dipartimento dipartimento);
	
	ArrayList<Dipartimento> cercaDipartimento(String nome);
	
	ArrayList<Dipartimento> getDipartimentoById(int id);
	
	void modificaDipartimento(Dipartimento newDipartimento);
	
	void eliminaDipartimento(Dipartimento dipartimento);
	
	void creaAreaScientifica(AreaScientifica area);
	
	ArrayList<AreaScientifica> cercaAreaScientifica(String nome, String codice);
	
	ArrayList<AreaScientifica> getAreaScientificaById(int id);
	
	void modificaAreaScientifica(AreaScientifica area);
	
	void eliminaAreaScientifica(AreaScientifica area);
	
	void creaEvento(Evento evt);
	
	ArrayList<Evento> cercaEvento(String nome, String bando);
	
	ArrayList<Evento> getEventoById(int id);
	
	void modificaEvento(Evento evt);
	
	void eliminaEvento(Evento evt);
	
	ArrayList<Dipartimento> getAllDipart();
	
	ArrayList<AreaScientifica> getAllAree();
	
	ArrayList<Evento> getEventiDisponibili();
	
}
